#ifndef _Ape__EMemoryCorruption
#define _Ape__EMemoryCorruption

#include <Ape/Object.h>
#include <Ape/Exception.h>

#ifdef WITH_EXCEPTIONS

namespace Ape {
	/**
		This type of exception should be thrown when any very-very dangerous thing is going on
		@author Roman Gafiyatullin
	*/
	class EMemoryCorruption
				: public Exception
	{
		TYPE_NAME ("Ape::EMemoryCorruption")
		CLONEABLE (EMemoryCorruption)
	public:
		/**
			initialize with empty message
		*/
		EMemoryCorruption();
		/**
			initialize with message
			@param msg message
		*/
		EMemoryCorruption (const wchar_t* msg);
		/**
			copy ctor
			@param other original object
		*/
		EMemoryCorruption (const EMemoryCorruption& other);
		/**
			dtor
		*/
		virtual ~EMemoryCorruption();
		
		virtual void _Dump (bool verbose = false) const;
	};
}

#endif // WITH_EXCEPTIONS

#endif // _Ape__EMemoryCorruption
